package ejb.cbm.operatoria.entity;

import java.util.Date;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="CHEQUE")
public class ChequeEntity  implements java.io.Serializable {

    // Fields    

     private ChequeEntityId id;
     private OperacionChequeEntity operacioncheque;
     private Long tipocheque;
     private Date fechagiro;
     private Date fechapago;
     private Date fechavalorefectivo;
     private Double importe;
     private String observacioncheque;
     private String numerocuenta;
     private String codigooficinapago;
     private String usuarioregistro;
     private Date fecharegistro;
     private String usuariomodificacion;
     private Date fechamodificacion;

    // Constructors

    /** default constructor */
    public ChequeEntity() {
    }

	/** minimal constructor */
    public ChequeEntity(ChequeEntityId id, OperacionChequeEntity operacioncheque, Long tipocheque, Double importe, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.id = id;
        this.operacioncheque = operacioncheque;
        this.tipocheque = tipocheque;
        this.importe = importe;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
    }
    
    /** full constructor */
    public ChequeEntity(ChequeEntityId id, OperacionChequeEntity operacioncheque, Long tipocheque, Date fechagiro, Date fechapago, Date fechavalorefectivo, Double importe, String observacioncheque, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.id = id;
        this.operacioncheque = operacioncheque;
        this.tipocheque = tipocheque;
        this.fechagiro = fechagiro;
        this.fechapago = fechapago;
        this.fechavalorefectivo = fechavalorefectivo;
        this.importe = importe;
        this.observacioncheque = observacioncheque;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
    }

   
    // Property accessors
    @EmbeddedId
    @AttributeOverrides( {
        @AttributeOverride(name="codigooperacion", column=@Column(name="CODIGOOPERACION", unique=false, nullable=false, insertable=true, updatable=true, precision=8, scale=0) ), 
        @AttributeOverride(name="numerocheque", column=@Column(name="NUMEROCHEQUE", unique=false, nullable=false, insertable=true, updatable=true, length=30) ) } )

    public ChequeEntityId getId() {
        return this.id;
    }
    
    public void setId(ChequeEntityId id) {
        this.id = id;
    }
    
    @ManyToOne(cascade={},fetch=FetchType.LAZY)
    @JoinColumn(name="CODIGOOPERACION", unique=false, nullable=false, insertable=false, updatable=false)
    public OperacionChequeEntity getOperacioncheque() {
        return this.operacioncheque;
    }
    
    public void setOperacioncheque(OperacionChequeEntity operacioncheque) {
        this.operacioncheque = operacioncheque;
    }
    
    @Column(name="TIPOCHEQUE", unique=false, nullable=false, insertable=true, updatable=true, precision=1, scale=0)
    public Long getTipocheque() {
        return this.tipocheque;
    }
    
    public void setTipocheque(Long tipocheque) {
        this.tipocheque = tipocheque;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAGIRO", unique=false, nullable=true, insertable=true, updatable=true, length=7)

    public Date getFechagiro() {
        return this.fechagiro;
    }
    
    public void setFechagiro(Date fechagiro) {
        this.fechagiro = fechagiro;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAPAGO", unique=false, nullable=true, insertable=true, updatable=true, length=7)
    public Date getFechapago() {
        return this.fechapago;
    }
    
    public void setFechapago(Date fechapago) {
        this.fechapago = fechapago;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAVALOREFECTIVO", unique=false, nullable=true, insertable=true, updatable=true, length=7)
    public Date getFechavalorefectivo() {
        return this.fechavalorefectivo;
    }
    
    public void setFechavalorefectivo(Date fechavalorefectivo) {
        this.fechavalorefectivo = fechavalorefectivo;
    }
    
    @Column(name="IMPORTE", unique=false, nullable=false, insertable=true, updatable=true, precision=14, scale=4)
    public Double getImporte() {
        return this.importe;
    }
    
    public void setImporte(Double importe) {
        this.importe = importe;
    }
    
    @Column(name="OBSERVACIONCHEQUE", unique=false, nullable=true, insertable=true, updatable=true, length=200)
    public String getObservacioncheque() {
        return this.observacioncheque;
    }
    
    public void setObservacioncheque(String observacioncheque) {
        this.observacioncheque = observacioncheque;
    }
    
    @Column(name="USUARIOREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuarioregistro() {
        return this.usuarioregistro;
    }
    
    public void setUsuarioregistro(String usuarioregistro) {
        this.usuarioregistro = usuarioregistro;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFecharegistro() {
        return this.fecharegistro;
    }
    
    public void setFecharegistro(Date fecharegistro) {
        this.fecharegistro = fecharegistro;
    }
    
    public String getNumerocuenta() {
		return numerocuenta;
	}

	public void setNumerocuenta(String numerocuenta) {
		this.numerocuenta = numerocuenta;
	}

	public String getCodigooficinapago() {
		return codigooficinapago;
	}

	public void setCodigooficinapago(String codigooficinapago) {
		this.codigooficinapago = codigooficinapago;
	}

	@Column(name="USUARIOMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuariomodificacion() {
        return this.usuariomodificacion;
    }
    
    public void setUsuariomodificacion(String usuariomodificacion) {
        this.usuariomodificacion = usuariomodificacion;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFechamodificacion() {
        return this.fechamodificacion;
    }
    
    public void setFechamodificacion(Date fechamodificacion) {
        this.fechamodificacion = fechamodificacion;
    }
}